/**
 * 不同图表所需要的初始化模板参数
 * */

/* 收入情况 柱状 + 折线 混搭 */
const barMain = () => {
  return {
    title: {
      text: '收入情况',
      top: 10,
      left: 10
    },

    tooltip: {
      trigger: 'axis',
      axisPointer: {
        type: 'cross',
        crossStyle: { color: '#999' }
      }
    },

    /* 大小 */
    grid: {
      top: 80,
      right: 50,
      bottom: 70,
      left: 80
    },

    /* 色块 */
    legend: {
      data: ['今年预算', '今年实际', '去年实际', '达成率', '同比'],
      bottom: '2%',
    },

    /* 底部横坐标 */
    xAxis: [{
      type: 'category',
      data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
      axisPointer: { type: 'shadow' },

      /* 文字倾斜 */
      axisLabel: {
        interval: 0,
        rotate: 45
      }
    }],

    /* 左右两侧纵坐标 */
    yAxis: [{
      type: 'value',
      name: '金额（单位：万元）',
      axisLabel: { formatter: '{value}' }
    }, {
      type: 'value',
      name: '百分比（%）',
      axisLabel: { formatter: '{value}' }
    }],

    /* 图表数据 */
    series: [{
      name: '今年预算',
      type: 'bar',
      seriesKey: 'value.series1',   // 找到对应后台数据结构
      color: '#9dc3e6',
      data: [2.0, 4.9, -7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, -3.3]
    }, {
      name: '今年实际',
      type: 'bar',
      seriesKey: 'value.series2',
      color: '#ed7d31',
      data: [2.6, 5.9, -9.0, 26.4, 28.7, 70.7, -175.6, 182.2, 48.7, 18.8, 6.0, -2.3]
    }, {
      name: '去年实际',
      type: 'bar',
      seriesKey: 'value.series3',
      color: '#ffd966',
      data: [2.6, 5.9, -9.0, -26.4, 28.7, 70.7, 175.6, 182.2, 48.7, -18.8, -6.0, -12.3]
    }, {
      name: '达成率',
      type: 'line',
      seriesKey: 'contrasts.series1',
      yAxisIndex: 1,
      color: '#ffc000',
      data: [80.0, 62.2, 83.3, 74.5, 66.3, -10.2, 120.3, 223.4, 23.0, -6.5, 1.0, 56.2]
    }, {
      name: '同比',
      type: 'line',
      seriesKey: 'contrasts.series1',
      yAxisIndex: 1,
      color: '#5b9bd5',
      data: [1.0, 11.2, -11.3, 112.5, 54.3, 10.2, 100.3, 3.4, 2, 16.5, 1.0, 50.2]
    }]
  };
};

/* 销售情况 柱状 + 折线 混搭（针对销售看板） */
const barMain2 = () => {
  return {
    title: {
      text: '销售情况',
      top: 10,
      left: 10
    },

    tooltip: {
      trigger: 'axis',
      axisPointer: {
        type: 'cross',
        crossStyle: { color: '#999' }
      }
    },

    /* 大小 */
    grid: {
      top: 80,
      right: 50,
      bottom: 70,
      left: 80
    },

    /* 色块 */
    legend: {
      data: ['退住', '新增入住', '净新增预算'],
      bottom: '2%',
    },

    /* 底部横坐标 */
    xAxis: [{
      type: 'category',
      data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
      axisPointer: { type: 'shadow' },

      /* 文字倾斜 */
      axisLabel: {
        interval: 0,
        rotate: 45
      }
    }],

    /* 左右两侧纵坐标 */
    yAxis: [{
      type: 'value',
      name: '金额（单位：万元）',
      axisLabel: { formatter: '{value}' }
    }, {
      type: 'value',
      name: '百分比（%）',
      axisLabel: { formatter: '{value}' }
    }],

    /* 图表数据 */
    series: [{
      name: '退住',
      type: 'bar',
      seriesKey: 'value.series1',   // 找到对应后台数据结构
      color: '#9dc3e6',
      data: [2.0, 4.9, -7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, -3.3]
    }, {
      name: '新增入住',
      type: 'bar',
      seriesKey: 'value.series2',
      color: '#ed7d31',
      data: [2.6, 5.9, -9.0, 26.4, 28.7, 70.7, -175.6, 182.2, 48.7, 18.8, 6.0, -2.3]
    }, {
      name: '净新增预算',
      type: 'line',
      seriesKey: 'contrasts.series1',
      color: '#ffd966',
      data: [2.6, 5.9, -9.0, -26.4, 28.7, 70.7, 175.6, 182.2, 48.7, -18.8, -6.0, -12.3]
    }]
  };
};

/* 销售情况 柱状 + 折线 混搭（针对销售看板 床位使用率） */
const barMain3 = () => {
  return {
    title: {
      text: '销售情况',
      top: 10,
      left: 10
    },

    tooltip: {
      trigger: 'axis',
      axisPointer: {
        type: 'cross',
        crossStyle: { color: '#999' }
      }
    },

    /* 大小 */
    grid: {
      top: 80,
      right: 50,
      bottom: 70,
      left: 80
    },

    /* 色块 */
    legend: {
      data: ['今年预算', '今年实际', '达成率'],
      bottom: '2%',
    },

    /* 底部横坐标 */
    xAxis: [{
      type: 'category',
      data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
      axisPointer: { type: 'shadow' },

      /* 文字倾斜 */
      axisLabel: {
        interval: 0,
        rotate: 45
      }
    }],

    /* 左右两侧纵坐标 */
    yAxis: [{
      type: 'value',
      name: '金额（单位：万元）',
      axisLabel: { formatter: '{value}' }
    }, {
      type: 'value',
      name: '百分比（%）',
      axisLabel: { formatter: '{value}' }
    }],

    /* 图表数据 */
    series: [{
      name: '今年预算',
      type: 'bar',
      seriesKey: 'value.series1',   // 找到对应后台数据结构
      color: '#9dc3e6',
      data: [2.0, 4.9, -7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, -3.3]
    }, {
      name: '今年实际',
      type: 'bar',
      seriesKey: 'value.series2',
      color: '#ed7d31',
      data: [2.6, 5.9, -9.0, 26.4, 28.7, 70.7, -175.6, 182.2, 48.7, 18.8, 6.0, -2.3]
    }, {
      name: '达成率',
      type: 'line',
      seriesKey: 'contrasts.series1',
      color: '#ffd966',
      data: [2.6, 5.9, -9.0, -26.4, 28.7, 70.7, 175.6, 182.2, 48.7, -18.8, -6.0, -12.3]
    }]
  };
};

/* 贡献度 柱状图 */
const barContribution = () => {
  return {
    title: {
      text: '各园区预算达成贡献度',
      top: 10,
      left: 10
    },

    /* 提示框 */
    tooltip: {
      trigger: 'axis',
      axisPointer: {
        type: 'shadow'
      },
      formatter: '{b}：{c}',
      extraCssText: 'width: auto !important;'
    },

    /* 大小 */
    grid: {
      top: 70,
      right: 20,
      bottom: 60,
      left: 50
    },

    xAxis: {
      type: 'category',
      seriesKey: 'value.series1Title',
      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],

      /* 文字倾斜 */
      axisLabel: {
        interval: 0,
        rotate: 45
      }
    },

    yAxis: { type: 'value' },

    series: [{
      name: '贡献度',
      color: '#ed7d31',
      seriesKey: 'value.series1',
      barWidth: '60%',
      data: [120, 200, 150, 80, 70, 110, 130],
      type: 'bar',
      label: {
        show: true,
        position: 'top'
      },
    }]
  };
};

/* 贡献度 柱状瀑布流图 */
const barContribution2 = () => {
  return {
    title: {
      text: '各园区预算达成贡献度',
      top: 10,
      left: 10
    },

    /* 提示框 */
    tooltip: {
      trigger: 'axis',
      axisPointer: {
        type: 'shadow'
      },
      formatter: '{b}：{c}',
      extraCssText: 'width: auto !important;'
    },

    /* 大小 */
    grid: {
      top: 70,
      right: 20,
      bottom: 60,
      left: 50
    },

    xAxis: {
      type: 'category',
      seriesKey: 'value.series1Title',
      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],

      /* 文字倾斜 */
      axisLabel: {
        interval: 0,
        rotate: 45
      }
    },

    yAxis: { type: 'value' },

    series: [{
      name: '辅助',
      type: 'bar',
      stack: '总量',
      barWidth: '50%',
      itemStyle: {
        barBorderColor: 'rgba(0, 0, 0, 0)',
        color: 'rgba(0, 0, 0, 0)'
      },
      emphasis: {
        itemStyle: {
          barBorderColor: 'rgba(0, 0, 0, 0)',
          color: 'rgba(0, 0, 0, 0)'
        }
      },
      label: {
        show: true,
        position: 'top'
      },
      data: [0, 900, 1245, 1530, 1376, 1376, 1511, 1689, 1856, 1495, 1292]
    }, {
      name: '收入',
      type: 'bar',
      stack: '总量',
      barWidth: '50%',
      color: '#ed7d31',
      label: {
        show: true,
        position: 'top'
      },
      data: [900, 345, 393, '-', '-', 135, 178, 286, '-', '-', '-']
    }, {
      name: '支出',
      type: 'bar',
      stack: '总量',
      barWidth: '50%',
      color: '#cccccc',
      label: {
        show: true,
        position: 'top'
      },
      data: ['-', '-', '-', 108, 154, '-', '-', '-', 119, 361, 203]
    }]
  };
};

/* 园区占比 玫瑰图 */
const pieDepart = () => {
  return {
    // backgroundColor: '#fff',

    title: {
      text: '园区占比',
      top: 10,
      left: 10,
      textStyle: {
        // color: '#ccc'
      }
    },

    tooltip : {
      trigger: 'item',
      formatter: "{b} : {c} ({d}%)"
    },

    visualMap: {
      // show: false,
      // min: 10,
      // max: 600,
      inRange: {
        color: '#54a3dc',
        colorLightness: [0, 0.72]
      }
    },
    series: [{
      type: 'pie',
      radius: '65%',
      center: ['55%', '55%'],
      hoverOffset: 2,             // 鼠标经过时扇区的大小变化
      data: [].sort(function (a, b) { return a.value - b.value; }),
      // roseType: 'radius',
      label: {
        // show: false,
        position: 'inner',
        formatter: "{b}: {c}"
      },
      itemStyle: {
        normal: {
          shadowBlur: 10,
          shadowColor: 'rgba(0, 0, 0, 0.2)'
        }
      },
    }]
  };
};

/* 业态占比 饼图 */
const pieTrade = () => {
  return {
    title: {
      text: '业态占比',
      top: 10,
      left: 10
    },

    tooltip: {
      trigger: 'item',
      formatter: '{b}: {c}%'
    },

    legend: {
      data: ['独立收入', '护理收入', '医院收入'],
      bottom: 10,
    },

    series: [{
      name: '访问来源',
      type: 'pie',
      radius: '60%',
      center: ['50%', '50%'],
      label: {
        position: 'inner',
        formatter: "{b}: {c}%"
      },
      hoverOffset: 2,             // 鼠标经过时扇区的大小变化
      color: ['#9dc3e6', '#f48137', '#ffd966'],
      data: [
        {value: 55, name: '独立收入'},
        {value: 15, name: '护理收入'},
        {value: 30, name: '医院收入'}
      ]
    }]
  };
};

/* 表格数据 */
const tableCommon = () => {
  let header = [{
    title: '参考项',
    align: 'center',
    dataIndex: 'name',
    fixed: 'left',
    width: 120,
    scopedSlots: { customRender: 'name' }
  }];

  // 将 1~12 月添至表头
  for (let i = 1; i <= 12; i++) {
    let monthStr = (i < 10) ? ('0' + i) : i;

    // 每次信息将月份信息添加至 header 数组倒数第二个
    header.splice(header.length, 0, {
      title: i + '月',
      align: 'center',
      width: 80,
      dataIndex: 'm' + monthStr,
      scopedSlots: { customRender: 'm' + monthStr }
    });
  }

  return {
    scroll: { x: getTotal(header) },

    // 表头信息
    columns: header,

    // 表格数据，通过接口拿到，默认空数组
    dataSource: [
      { name: '今年预算(万元)', seriesKey: 'value.series1' },
      { name: '今年实际(万元)', seriesKey: 'value.series2' },
      { name: '去年实际(万元)', seriesKey: 'value.series3' },
      { name: '达成率(%)', seriesKey: 'contrasts.series1' },
      { name: '同比(%)', seriesKey: 'contrasts.series2' },
    ],
  };
};



function getTotal(arrs) {
  return arrs.reduce((total, obj) => {
    let n = (typeof obj.width === 'number') ? obj.width : 0;
    return total + n;
  }, 0)
}




export { barMain, barMain2, barMain3, barContribution, barContribution2, pieDepart, pieTrade, tableCommon };

